<?php
namespace Home\Biz;

/**
 * @Title: file_name
 * Description: 投票系统
 * @version 2016年11月24日 上午11:18:16 
 * @author lin.yujiao@whaley.cn
 */
class VoteBiz {
	/**
	 * Description: 对需要进行投票的主题进行时间和存在性校验
	 * @version 2016年11月24日 上午11:19:04 
	 * @author lin.yujiao@whaley.cn
	 */
    public static function baseValidate($vote) {
    	if($vote == null){
    		return '不存在的投票主题';
    	}
    	$start_time = strtotime($vote['start_time']);
    	$end_time = strtotime($vote['end_time']);
    	if($start_time > time()){
    		return '该投票还未开始';
    	}
    	if($end_time < time()){
    		return '该投票已结束';
    	}
    	return '';
    }
    /**
     * Description: 根据ID获取相应投票主题与明细
     * @version 2016年11月24日 下午2:06:49 
     * @author lin.yujiao@whaley.cn
     * @param unknown $vote_id
     * @return mixed|boolean|NULL|string|unknown|object
     */
    public static function getFullVoteInfo($vote_id){
    	//$condition_array['start_time'] = array('between', array(date("Y-m-d",time()),date("Y-m-d 23:59:59",time())));
    	$condition_array['delete_flag'] = array('neq', 1);
    	$condition_array['vote_id'] = array('eq', $vote_id);
    	//M方法实例化模型
    	$vote_entity = M('vote_subject','','DB_system');
    	//查询
    	$vote = $vote_entity->where($condition_array)->find();
    	if($vote == null || $vote == false){
    		return null;
    	}
    	//查询
    	$lst_vote_items = M('vote_items','','DB_system')->where('vote_id="%s"', array($vote_id))->select();
    	if(count($lst_vote_items) > 0 ){
    		$vote['item_info'] = $lst_vote_items;
    	}
    	$vote['debug_msg'] = count($lst_vote_items);
    	return $vote;
    }
    
    /**
     * Description: 投票校验
     * @version 2016年9月28日 下午7:25:54
     * @author lin.yujiao@whaley.cn
     */
    public static function voteValidate($vote, $employee_code){
    	if(sizeof($check_items) > $vote['check_box_max']){
    		return '最多可以选择' . $vote['check_box_max'] . '项';
    	}
    	$item_ids = array();
    	foreach ($vote_info['item_info'] as $item_info){
    		array_push($item_ids,$item_info['item_id']);
    	}
    	$condition_array['item_id'] = array('in', $item_ids);
    	$condition_array['record_user_id'] = array('eq', $employee_code);
    	
    	$con = array();
    	array_push($con, " i.vote_id = '" . $vote['vote_id'] . "'" );
    	array_push($con, " r.record_user_id = '" . $employee_code . "'" );
    	$condition_sql = implode(' AND ', $con);
    	$sql = " SELECT r.* FROM whaley_system.vote_sign_record r INNER JOIN whaley_system.vote_items i ON i.item_id = r.item_id";
    	$sql = $sql." WHERE ".$condition_sql;
    	$records = M('')->query($sql);
    	if(sizeof($records) > 0){
    		return '您已对该调研进行过投票,请勿重复操作';
    	}
    }
    /**
     * Description: 投票执行
     * @version 2016年11月25日 下午3:37:21 
     * @author lin.yujiao@whaley.cn
     */
    public static function doVote($vote_id, $employee_code, $employee_name, $check_items){
    	$vote = self::getFullVoteInfo($vote_id);
    	//校验距离等
    	$msg = self::voteValidate($vote, $employee_code);
    	//校验成功msg为空 否则直接返回错误信息
    	if(empty($msg)){
    		$add_entitys = array();
    		foreach ($check_items as $item_id){
    			array_push($add_entitys,array (
    				'record_id' => self::generateVoteRecordId(),
    				'item_id' => $item_id,
    				'record_user_id' => $employee_code,
    				'record_user_name' => $employee_name,
    				'create_user' => 'whaley.fz.voteBiz.doVote',
    				'create_date' => date("y-m-d H:i:s", time())
    			));
    		}
    		$success_count = M('vote_sign_record','','DB_system')->addAll($add_entitys);
    		if($success_count = sizeof($add_entitys)){
	    		$param['item_id']  = array('in',$check_items);
	    		M('vote_items','','DB_system')->where($param)->setInc('item_count',1); 
    			return array('isSuccess'=>true,'msg'=>'投票成功');
    		}
    	    //否则数据库操作失败 投票失败
    		$msg = '投票失败';
    	}
    	return array('isSuccess'=>false,'msg'=>$msg);
    }
    /**
     * Description:
     * @version 生成投票记录唯一编码
     * @author lin.yujiao@whaley.cn
     * @return string
     */
    public static function generateVoteRecordId()
    {
    	$seq = CommonBiz::getNewSeq('record_id') + 10000000;
    	return 'VSR' . $seq;
    }
} 